1
Código como Dados: A Natureza Homoiconica do Elixir
AI019Lesson 10
00:00

A Natureza da Homoiconicidade

Linguagem homoiconica: Uma linguagem em que a representação interna é expressa na própria linguagem. No Elixir, o código-fonte não é apenas texto; é uma estrutura de dados aninhada conhecida como a Árvore Abstrata de Sintaxe (AST).

1. Regras Lógicas de Representação

O Elixir simplifica a AST representando literais básicos por si mesmos. Átomos, números, listas (incluindo listas de palavras-chave), binários e tuplas com dois elementos são representados internamente sem envoltórios complexos.

iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binários"
"binários"

2. Estrutura da Tupla AST

A maioria das transformações de código resulta em uma tupla de três elementos: {nome_função, metadados, argumentos}. Por exemplo, uma chamada de função como 1 + 2 torna-se {:+, [linha: 1], [1, 2]}. Isso permite que a linguagem trate Código como Dados.

3. Macros: Adiando Execução

Macros são "uma forma de adiar a execução de cláusulas injetando código de volta na representação interna do nosso programa." Enquanto funções padrão avaliam os argumentos antes chamadas, os macros recebem a AST bruto, permitindo a injeção de lógica antes da compilação.

$$\text{Código Fonte} \xrightarrow{\text{Quote}} \text{Tupla AST} \xrightarrow{\text{Macro}} \text{AST Transformado}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>